Development Tools The function of a development system is to facilitate the writeing and testing of code. The Turbo IDE works pretty well as far as the Edit/Compile/Test portion of the cycle goes, but doesn't facilitate multiple program development, code libraries documentation or distribution. Until recently, I have been adding utility programs one by one as the need arises. Along the way, I have been building up a library of routines and objects which make each additional program easier to assemble. The following are stand-alone utilities, each performing a useful function. Because they share code libraries and structures, their operation is similar. See the section on Utility Program Structure for details. A design target of mine is that any program should be 80%-90% library routines. To the maximum extent possible, re-useable code is made a little more general than necessary and moved into the library. This makes the utilities themselves pretty simple to examine. My primary goals are: 1. Everything is absolutely in the PUBLIC DOMAIN. 2. Everything can be re-compiled and changed to taste. 3. Most sensible options are supported via CFG files or command line parameters. The programs: 1. TLISTER - Optimized for the listing of PASCAL source files. If file extension not specified, assumes '.pas'. It can handle '*.pas' for all files on a directory. Page header contains the file mod date, name, and page number. The command line option INTERFACE=YES will list out only the interface section of a unit. 2. TPRINT - Old-Fashioned text file formatter. Printing is controlled by visible "\" commands in the text. Commands for setting headers and footers, centering lines, word-wrap, indent and others are available. Produces decent looking documentation. 3. TED - My own personalized text editor built around Borland's Editor Toolbox - BINED. Built strictly to my own tastes, but it is small and can be hooked into programs. The EXE is freely useable by anyone, from Borland's license, but modifying the source requires purchasing the Toolbox. {Oops, BINED isn't working with TP7, with each generation of compiler, I wind up having to go back to BORLAND} 4. USES - Scans unit and program files for the USES statement and parses it. USES * goes through all '.pas' files on the current directory and prints their uses statement. USES miscstuf would scan all '.pas' files and list only those which used 'miscstuf'. 5. DUMP - simple hex dumping utility, but with enough controls over start and end points, amount listed and format to make it a useful tool. 6. DIRS - provides a summary of the disk at the directory level. Scans all paths and accumulates statistics for each directory just off the root. Lets you see quickly which obsolete directories are costing the most disk space. 7. BIGFILES - scans entire disk, and lists files which exceed the specified file size. 8. FIND - scans entire disk for files matching template. Bigger andd probably slower than many others, but it is free and I can control it. 9. ZIP & PUT - My personal backup system. See later discussion. 10. DB - Ongoing xBase utilities and routines. I like ALPHA 4 and R&R Report Writer and others, but I can't give away or sell them. Current status is: DB DDL - shows record structure DB DUMP - Record lister with considerable power DB ZAP - Deletes all records DB CLONE - Creates new empty file from existing DBF DB SORT - Sorts (and packs) a DBF via a key DB EXPORT - Extracts structure and data to text file DB IMPORT - Creates DBF and loads it DBPASGEN - generates a small pascal unit to access the DBF file Code Library status is centered around DBF_object and KEYED_DBF_object, with lower level access in xbasstuf. DBF read rewrite, append, delete and various other functions. I estimate the system at 85% completion (what is there is 100%, but there are missing logical pieces). I do not support xBase indexing (I have my own) primarily because I don't have useful specifications for the files. Same goes for memos. I have not yet approached the screen entry aspect since I am happy with Alpha 4, but would love to integrate a good PUBLIC DOMAIN screen package. 11. TP - My own IDE, replaces a number of batch files, uses TPC for compilation and handles smart copying to and from library units. You could easily substitute your own favorite text editor. 12. DELAY - trivial. Need to put delays into some compile batch files to slow them enough to see errors. 13. ENV - for addressing envelopes on a LJ 4, not generalized, but would probably work for other PCL based printers, could be generalized. Overall structure: 1. Most utility programs allow for '.cfg' files to process input parameters. If the program is named XXXX.exe, config files are merged together in the following order: 0. compiled in default values 1. c:\XXXX.cfg 2. XXXX.cfg wherever the EXE file is 3. XXXX.cfg in the current directory 4. --------.--- named by EXTRA=--------.--- in one of the cfg files All of the cfg files are optional, assuming the compiled defaults do something useful. In these files are things like COMPRESSED=YES or LABEL='Test Program', and the last one encountered rules. This allows utilities to take on locally useful defaults without messing up standard configuration. For example, I tend to leave TLISTER with OUT= pointed to LPT1 so I can quickly print out source files. If I don't want to waste paper on a particular project, I can add TLISTER.cfg on a development directory and place OUT=TEMP.TXT in it. This makes TLISTER act differently here than anywhere else. I can easily have ENV (envelope printer) point to different address lists on my wife's directories than my own.